﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace PagSeguro.Mvc.ActionFilters
{
    // TODO: Implementado, porém não está funcionando
    [AttributeUsage(AttributeTargets.Method, AllowMultiple=false, Inherited=true)]
    public class RetornoAutomaticoFilter : ActionFilterAttribute
    {
        public string Parametro { get; set; }

        public RetornoAutomaticoFilter(string parametro)
        {
            Parametro = parametro;
        }

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.ActionParameters.ContainsKey(Parametro))
            {
                var request = filterContext.HttpContext.Request;
                if (request.HttpMethod != "POST")
                    throw new InvalidOperationException("Uma instância de RetornoVenda só é criada em actions com requisição HttpPost");

                filterContext.ActionParameters[Parametro] = new RetornoAutomatico(request);
            }

            base.OnActionExecuting(filterContext);
        }
    }
}
